﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.ObjectModel;

namespace ProjectEdificio
{
    public partial class NewInquilino : Window
    {
        private Inquilino inqui = null;
        private BDManagment bdm = null;
        private bool Edit = false;
        public int IDInquilino = 0;

        public NewInquilino(string NumPiso, string LetraPiso) // new inquilino
        {
            InitializeComponent();
            inqui = new Inquilino();
            inqui.LetraPiso = LetraPiso;
            inqui.NumPiso = int.Parse(NumPiso);
            bdm = BDManagment.getInstance();
            this.Title = "Nuevo Inquilino";
            this.Edit = false;
        }

        public NewInquilino(Inquilino inquilinoEdit)//Edit
        { // edit inquilino
            InitializeComponent();
            inqui = new Inquilino();
            inqui.ID_Inquilino = inquilinoEdit.ID_Inquilino;
            inqui.NumPiso = inquilinoEdit.NumPiso;
            inqui.LetraPiso = inquilinoEdit.LetraPiso;
            bdm = BDManagment.getInstance();
            this.textBoxApellido.Text = inquilinoEdit.Apellido;
            this.textBoxNombre.Text = inquilinoEdit.Nombre;
            this.textBoxDNI.Text = inquilinoEdit.DNI.ToString();
            this.textBoxEmail.Text = inquilinoEdit.Email;
            this.textBoxTelefono.Text = inquilinoEdit.Telefono.ToString();
            this.textBoxMontoAlquiler.Text = inquilinoEdit.Monto.ToString();
            this.datePickerDesdeInquilino.Text = inquilinoEdit.Desde.ToShortDateString();
            this.datePickerHastaInquilino.Text = inquilinoEdit.Hasta.ToString();

            this.Edit = true;
            this.Title = "Editar Inquilino";
        }

        private void buttonNext_Click(object sender, RoutedEventArgs e)
        {
            if (textBoxApellido.Text != string.Empty && textBoxDNI.Text != string.Empty && textBoxEmail.Text != string.Empty && textBoxNombre.Text != string.Empty && textBoxTelefono.Text != string.Empty)
            {
                inqui.Apellido = textBoxApellido.Text;
                inqui.Nombre = textBoxNombre.Text;
                inqui.DNI = int.Parse(textBoxDNI.Text);
                inqui.Telefono = long.Parse(textBoxTelefono.Text);
                inqui.Email = textBoxEmail.Text;
                inqui.Deleted = 0;


                this.gridNewInquilino1.Visibility = Visibility.Collapsed;
                this.gridNewInquilino2.Visibility = Visibility.Visible;
            }
            else
            {
                MessageBox.Show("Complete todos los datos!");
            }
            
        }

        private void buttonAceptarnewinqui2_Click(object sender, RoutedEventArgs e)
        {
            if (datePickerDesdeInquilino != null && datePickerHastaInquilino != null && textBoxMontoAlquiler.Text != string.Empty)
            {
                DateTime desde = DateTime.Parse(datePickerDesdeInquilino.ToString());
                DateTime hasta = DateTime.Parse(datePickerHastaInquilino.ToString());
                if (desde <= DateTime.Now && hasta >= DateTime.Now)
                {
                    inqui.Desde = desde;
                    inqui.Hasta = hasta;
                    inqui.Monto = int.Parse(textBoxMontoAlquiler.Text);
                    if (Edit)
                    {
                        bdm.editInquilino(inqui);
                        this.Close();
                    }
                    else
                    {
                        if (checkBoxCocheraSi.IsChecked == true)
                        {
                            if (textBoxMontoCochera.Text != string.Empty && datePickerDesdeCochera.Text != string.Empty && datePickerHastaCochera.Text != string.Empty && comboBoxCocherasDisponibles.SelectedIndex != -1)
                            {
                                DateTime desdeCochera = DateTime.Parse(datePickerDesdeCochera.ToString());
                                DateTime hastaCochera = DateTime.Parse(datePickerHastaCochera.ToString());
                                bool flag = true;
                                if (desdeCochera <= DateTime.Now && hastaCochera >= DateTime.Now)
                                {
                                    if (desdeCochera < desde)
                                    {
                                        MessageBox.Show("El alquiler de cocheras solo se puede efectuar dentro del periodo de estadía del Inquilino, por favor Verifique las FECHAS de alquiler de COCHERA");
                                        flag = false;
                                    }
                                    if (hastaCochera > hasta)
                                    {
                                        MessageBox.Show("El alquiler de cocheras solo se puede efectuar dentro del periodo de estadía del Inquilino, por favor Verifique las FECHAS de alquiler de COCHERA");
                                        flag = false;
                                    }
                                    if (flag)
                                    {
                                        bdm.addInquilinoInDpto(inqui);
                                        int id = bdm.searchIDInquilinoForPisoyLetra(inqui.NumPiso, inqui.LetraPiso);
                                        bdm.addCochera(new Cochera(id, int.Parse(comboBoxCocherasDisponibles.Text), int.Parse(textBoxMontoCochera.Text), desdeCochera, hastaCochera));
                                        this.Close();
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("Controle las Fechas!");
                                }
                            }
                            else
                            {
                                MessageBox.Show("Faltan datos!");
                            }
                        
                        }
                        else
                        {
                            bdm.addInquilinoInDpto(inqui);
                            this.Close();
                        }
                        
                    }

                    
                }
                else
                {
                    MessageBox.Show("Controle las Fechas!");
                }
                
            }
            else
            {
                MessageBox.Show("Faltan datos!");
            }
        }

        private void buttonCancelar_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }


        private void checkBoxCocheraSi_Checked(object sender, RoutedEventArgs e)
        {
            this.comboBoxCocherasDisponibles.IsEnabled = true;
            this.datePickerDesdeCochera.IsEnabled = true;
            this.datePickerHastaCochera.IsEnabled = true;
            this.textBoxMontoCochera.IsEnabled = true;

            ObservableCollection<Cochera> cocheras = bdm.getListaCocheras();
            foreach (Cochera co in cocheras)
            {
                if (co.MontoCochera == 0)
                {
                    ComboBoxItem item = new ComboBoxItem();
                    item.Content = co.NumCochera;
                    comboBoxCocherasDisponibles.Items.Add(item);
                }
            }

            if (datePickerDesdeInquilino.Text != string.Empty && datePickerHastaInquilino.Text != string.Empty)
            {
                datePickerDesdeCochera.Text = datePickerDesdeInquilino.Text;
                datePickerHastaCochera.Text = datePickerHastaInquilino.Text;

                datePickerDesdeCochera = datePickerDesdeInquilino;
                datePickerHastaCochera = datePickerHastaInquilino;
            }
        }
            

        private void checkBoxCocheraSi_Unchecked(object sender, RoutedEventArgs e)
        {
            this.comboBoxCocherasDisponibles.IsEnabled = false;
            this.datePickerDesdeCochera.IsEnabled = false;
            this.datePickerHastaCochera.IsEnabled = false;
            this.textBoxMontoCochera.IsEnabled = false;

        }

        private void buttonAtras_Click(object sender, RoutedEventArgs e)
        {
            this.gridNewInquilino1.Visibility = Visibility.Visible;
            this.gridNewInquilino2.Visibility = Visibility.Collapsed;
        }

        private void numerosTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key >= Key.D0 && e.Key <= Key.D9 || e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9)
                e.Handled = false;
            else
                e.Handled = true;
        }
    }
}
